package com.jay.base.jvm;

import java.util.ArrayList;
import java.util.List;
/**
 *VM Args：-XX：PermSize=10M-XX：MaxPermSize=10M
 */
public class RuntimeConstantPoolOOM {
    private static final int _1MB=1024*1024;
    public static void main(String args[]){
//        //使用List保持着常量池引用,避免Full GC回收常量池行为
//        List<String> list = new ArrayList<String>();
//        //10MB的PermSize在integer范围内足够产生OOM了
//        int i=0;
//        while(true){
//            list.add(String.valueOf(i++).intern());
//        }
        testAllocation();
    }
    public static void testAllocation(){
        byte[]allocation1,allocation2,allocation3,allocation4;
        allocation1=new byte[2*_1MB];
        allocation2=new byte[2*_1MB];
        allocation3=new byte[2*_1MB];
        allocation4=new byte[4*_1MB];//出现一次Minor GC
    }
}
